import EventBus from "@/utils/EventBus";
import axios, { AxiosError } from "axios";

//创建一个实例
const instance = axios.create({
  baseURL: "/api",
  timeout: 5000,
});

//拦截
instance.interceptors.request.use(
  (config) => {
    // 判断token 携带
    const token = localStorage.getItem("token");
    if (token) {
      config.headers = config.headers || {};
      config.headers["x-auth-token"] = token;
    }
    return config;
  },
  (err) => Promise.reject(err)
);

instance.interceptors.response.use(
  (res) => {
    //console.log(1);
    //res这个对象里面，会包含很多 我们在页面上用不到，我们一般只会需要 res.data
    return res.data;
  },
  (err: AxiosError<IResponse<any>, any>) => {
    // console.log(err.response.data.errCode);
    if (err.response?.data.errCode === 1002) {
      EventBus.emit("logintimeout");
      //如果把一个 文件使用import 导入，说明这个组件/代码 一定依赖于import进来的内容 --- 紧耦合
      //把原本必须在这里才能实现的效果，拆分开了---解耦
    }
    Promise.reject(err);
  }
);
export default instance;
